The invention relates generally to integrated circuit simulation and, more particularly but not by way of limitation, to techniques for simulating the interconnections between multiple integrated circuit components using only an S-parameter based approach.
Modern computer systems may be thought of as a combination of a number of interconnected subsystems. For example, a personal computer (“PC”) typically includes a power subsystem (to generate and distribute electrical power), a memory subsystem (to access, use and control system memory), a processor subsystem (to access, use and control one or more system processors), etc. Each subsystem, in turn, may itself be composed of multiple interconnected devices.
Referring to FIG. 1, illustrative PC memory subsystem 100 includes four (4) dual in-line memory modules (“DIMMs”) 105-120 coupled to motherboard 125 through connectors 130-145 and further coupled to memory controller 150 through electrically conductive paths (not shown). Referring to FIG. 2, illustrative DIMM 200 (e.g., one of 105-120) includes memory dies 205-240, each coupled to one of packages 245-280 each of which is further coupled to DIMM 200 (see, for example, part number MT8HTF3264A from Micron Technologies, Inc.). DIMM 200 could then, for example, couple to a motherboard (e.g., motherboard 125) via connector 285 (e.g., one of 130-145).
If DIMM 200 is used in memory subsystem 100, there are 7,200 interconnections or ports that must be identified and modeled during the design and simulation of subsystem 100: each memory die (e.g., 205-240) has 60 interconnects or ports to its package—(60×8×4); each package (e.g., 245-280) has 60 interconnects or ports to its module—(60×8×4); each module (e.g., 200 or 105-120) has 240 interconnects to its motherboard connector—(240×4); each connector (e.g., 130-145) has 240 interconnects to motherboard 125—(240×4); and memory controller 150 has 1,440 interconnects (memory controller die to memory controller package and memory controller package to motherboard).
As the complexity of individual circuits and the systems within which these circuits are used increase, fast and accurate simulations become more important in both the pre-layout and post-layout phase of system design. Accurate circuit simulations can provide feedback to design engineers to aid in their designs' refinement so that circuit and system objectives may be met. Prior art circuit simulation packages such as SPICE (Simulation Program Integrated Circuits, developed at the University of California, Berkeley) simulate circuit behavior using a modified nodal analysis (“MNA”) approach. In MNA, an equation for the voltage at each node in a network in terms of the current through the node is developed in accordance with Kirchoff's current law. The collection of all such equations for a network is represented in matrix form. Solution of the matrix is tantamount to simulating the circuit.
As circuit operational frequencies have increased, discontinuities such as interconnects (e.g., see FIG. 2) are described most easily in terms of S parameters. It will be recognized by those of ordinary skill in the art of circuit simulation that S parameters refer to the scattering matrix—a matrix that describes the response of an N-port network to voltage signals at each port. Prior art incorporation of S parameter blocks into a circuit simulation application is achieved by transforming the scattering matrices for each block into admittance or impedance matrices. Unfortunately, this transformation can be slow and result in admittance and/or impedance matrices that are ill-conditioned. Ill-conditioned matrices within a MNA-based application can, in turn, introduce significant numerical errors into the simulation's result—dramatically reducing the quality and reliability of the simulation's result. Thus, it would be beneficial to provide a technique to combine multiple S-parameter block matrices (each representing the behavior of a circuit or the interconnection between different circuits or networks) so that the combined circuit may be simulated directly using S parameters/matrices.